fragment中高德地图定位 您所在的位置:网站首页 高德地图Android 如何将定位蓝点放置在指定位置 fragment中高德地图定位

fragment中高德地图定位

#fragment中高德地图定位| 来源: 网络整理| 查看: 265

1.在写代码之前应当下好相应的高德地图SDK,官网上面就有下载之后导入就可以

高德地图SDK

2.配置好相关的lib包并添加依赖 这里写图片描述

在main文件中创建jnilibs文件夹,将SDK中的so文件导入进去 这里写图片描述 在build.gradle文件android中配置so文件

sourceSets{ main{ jniLibs.srcDirs=['libs'] } }

3.在Manifest文件中添加各种权限,地图及定位权限

在Application中注册服务组件

添加key信息,申请key的办法在官网上面有

4.layout布局文件,直接添加一个mapview控件就行了很简单,我多添加了一个开关按钮,用来切换地图

5.fragment中的代码

package com.lqx.ui.amazingdialog; /** * Created by NEDUsoftware on 2016/11/3. */ import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.ToggleButton; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.amap.api.maps.AMap; import com.amap.api.maps.LocationSource; import com.amap.api.maps.MapView; import com.amap.api.maps.model.MyLocationStyle; public class FindFragment extends Fragment implements CompoundButton.OnCheckedChangeListener,LocationSource,AMapLocationListener { private MapView mapView; private AMap aMap; private ToggleButton btn_mapchange; private MyLocationStyle myLocationStyle; private OnLocationChangedListener mListener; private AMapLocationClient locationClient; private AMapLocationClientOption clientOption; public static FindFragment newInstance() { FindFragment fragment = new FindFragment(); return fragment; } public FindFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_find, container, false); initview(savedInstanceState,view); initlistener(); return view; } private void initview( Bundle savedInstanceState,View view){ mapView= (MapView) view.findViewById(R.id.map); mapView.onCreate(savedInstanceState); if (aMap==null) { aMap=mapView.getMap(); } myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类 aMap.setMyLocationStyle(myLocationStyle); aMap.getUiSettings().setMyLocationButtonEnabled(true); aMap.setLocationSource(this); aMap.setMyLocationEnabled(true); btn_mapchange=(ToggleButton) view.findViewById(R.id.btn_mapchange); } private void initlistener(){ btn_mapchange.setOnCheckedChangeListener(this); } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener=listener; if(locationClient==null){ locationClient=new AMapLocationClient(getActivity()); clientOption=new AMapLocationClientOption(); locationClient.setLocationListener(this); clientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//高精度定位 clientOption.setOnceLocationLatest(true);//设置单次精确定位 locationClient.setLocationOption(clientOption); locationClient.startLocation(); } } /** * 停止定位 */ @Override public void deactivate() { mListener=null; if(locationClient!=null){ locationClient.stopLocation(); locationClient.onDestroy(); } locationClient=null; } @Override public void onLocationChanged(AMapLocation aMapLocation) { if (mListener != null&&aMapLocation != null) { if (aMapLocation != null &&aMapLocation.getErrorCode() == 0) { mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点 } else { String errText = "定位失败," + aMapLocation.getErrorCode()+ ": " + aMapLocation.getErrorInfo(); Log.e("AmapErr",errText); } } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ aMap.setMapType(AMap.MAP_TYPE_SATELLITE); } else { aMap.setMapType(AMap.MAP_TYPE_NORMAL); } } /** * 必须重写以下方法 */ @Override public void onResume(){ super.onResume(); mapView.onResume(); } @Override public void onPause() { super.onPause(); mapView.onPause(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } @Override public void onDestroy() { super.onDestroy(); mapView.onDestroy(); if(locationClient!=null){ locationClient.onDestroy(); } } }

效果图 这里写图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有